package siam.core;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import siam.ui.Joueur;
import siam.ui.SiamFrame;
import siam.ui.SiamPanel;

/**
 * Class which represent the game controller , to check gamer turn ...
 * @author Motassim Saad
 *
 */
public class MasterOfGame {
	/**
	 * Unique instance of MasterGame
	 */
	public final static MasterOfGame instance = new MasterOfGame();
	private SiamPanel siamPanel;
	private Joueur j1;
	private Joueur j2;
	private int turnNumber=0;
	private SiamFrame frame;
	private boolean game=true;
	private MasterOfGame() {
	}
	/**
	 * Initialise the master of game with 2 joueur and a representation of game
	 * @param siamPanel {@link SiamPanel} the Panel game
	 * @param j1 Joueur 1
	 * @param j2 Joueur 2
	 * 
	 */
	public  void init(SiamPanel siamPanel, Joueur j1, Joueur j2) {
		this.siamPanel = siamPanel;
		this.j1=j1;
		this.j2=j2;
	}
	/**
	 * Return currently gamer
	 * @return {@link Joueur} the current gamer
	 */
	public Joueur getJoueurTurn(){
		if(!game){
			return null;
		}
		if(turnNumber%2==0){
			return j1;
		}
		return j2;
	}
	
	/**
	 * The turn is finish
	 */
	public void TurnFinish(){
		turnNumber++;
		if(getJoueurTurn()!=null){
			siamPanel.getSiamInformation().setText(getJoueurTurn().getName()+" a toi de jouer!");
		}else{
			siamPanel.getSiamInformation().setText("fin de la partie");
		}
	}
	/**
	 * Stop the game and notice the winner
	 * @param {@link Joueur} winner 
	 */
	public void endGame(Joueur j){
		JOptionPane.showMessageDialog(frame, j.getName()+" a gagne!!!");
		this.game=false;
		
		
	}
	
	public void setFrame(SiamFrame frame){
		this.frame=frame;
	}

	/**
	 * Set the SiamInformation , Moove impossible
	 */
	public void notifyImpossibleMove() {
		siamPanel.getSiamInformation().setText("attention deplacement impossible");
		
	}
	public void newGame() {
		frame.setVisible(false);
		frame.dispose();
		JFrame frame=new SiamFrame();
		frame.setVisible(true);
		
	}
	

}
